package io_09_objectFlow;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import java.io.Serializable;

/**
 * @author fu-xiao-liu
 * @Date 2022/3/23 23:52
 *
 *  * Person需要满足如下的要求，方可序列化
 *  * 1.需要实现接口：Serializable
 *  * 2.当前类提供一个全局常量：serialVersionUID
 *  * 3.除了当前Person类需要实现Serializable接口之外，还必须保证其内部所有属性
 *  *   也必须是可序列化的。（默认情况下，基本数据类型可序列化）
 *  *
 *  *
 *  * 补充：ObjectOutputStream和ObjectInputStream不能序列化static和transient修饰的成员变量
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class Person implements Serializable {

    public static final long serialVersionUID = 475463534532L;
    private String name;
    private int age;
    private int id;
    private Account acct;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
class Account  implements Serializable{
    public static final long serialVersionUID = 4754534532L;
    private double balance;
}
